package com.pubinfo.passbook.common.model.bo.passbook.medical;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import java.io.Serializable;

@Data
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class MainExt implements Serializable {
  
  @ApiModelProperty("其他支付")
  @XmlElement(name = "OtherPayAmount")
  private String OtherPayAmount;
  
  @ApiModelProperty("相关票据代码")
  @XmlElement(name = "RelatedInvoiceCode")
  private String RelatedInvoiceCode;
  
  @ApiModelProperty("相关票据号码")
  @XmlElement(name = "RelatedInvoiceNumber")
  private String RelatedInvoiceNumber;
  
  @ApiModelProperty("缴款码")
  @XmlElement(name = "PayCode")
  private String PayCode;
  @ApiModelProperty("医疗票据信息")
  @XmlElement(name = "MedicalEInvoice")
  private MedicalEInvoiceInfo MedicalEInvoice;
  
  @ApiModelProperty("住院票据补充信息")
  @XmlElement(name = "HospitalizedExtInfo")
  private HospitalizedExtInfo HospitalizedExtInfo;
  
  @ApiModelProperty("门诊票据补充信息")
  @XmlElement(name = "OutMedicalExtInfo")
  private OutMedicalExtInfo OutMedicalExtInfo;
  
  @ApiModelProperty("发票类型")
  @XmlElement(name = "IndividualAccountPrevBalance")
  private String IndividualAccountPrevBalance;
  
  @ApiModelProperty("发票类型")
  @XmlElement(name = "MedicalDate")
  private String MedicalDate;
  
  @ApiModelProperty("医保统筹基金支付")
  @XmlElement(name = "FundPayAmount")
  private Double FundPayAmount;
  
  @ApiModelProperty("医疗类别")
  @XmlElement(name = "MedicalType")
  private String MedicalType;
  
  @ApiModelProperty("医保类型")
  @XmlElement(name = "MedicalInsuranceType")
  private String MedicalInsuranceType;
  
  @ApiModelProperty("医保统筹基金支付说明")
  @XmlElement(name = "FundPayAmountInfo")
  private String FundPayAmountInfo;
  
  @ApiModelProperty("个人账户支付")
  @XmlElement(name = "AccountPayAmount")
  private String AccountPayAmount;
  
  @ApiModelProperty("性别")
  @XmlElement(name = "Gender")
  private String Gender;
  
  @ApiModelProperty("个人现金支付")
  @XmlElement(name = "OwnPayAmount")
  private String OwnPayAmount;
  
  @ApiModelProperty("个人现金支付说明")
  @XmlElement(name = "OwnPayAmountInfo")
  private String OwnPayAmountInfo;
  
  @ApiModelProperty("道交救助基金垫付")
  @XmlElement(name = "FundDJJZAmount")
  private String FundDJJZAmount;
  
  @ApiModelProperty("个人自理")
  @XmlElement(name = "SelfpaymentCare")
  private String SelfpaymentCare;
  
  @ApiModelProperty("个人自付")
  @XmlElement(name = "SelfpaymentAmount")
  private String SelfpaymentAmount;
  
  @ApiModelProperty("医保编号")
  @XmlElement(name = "MedicalInsuranceID")
  private String MedicalInsuranceID;
  
  @ApiModelProperty("医疗机构类型")
  @XmlElement(name = "OrgType")
  private String OrgType;
  
  @ApiModelProperty("个人账户历年支付")
  @XmlElement(name = "IndividualAccountPrevPayment")
  private String IndividualAccountPrevPayment;
  
  @ApiModelProperty("手机号")
  @XmlElement(name = "PhoneNumber")
  private String PhoneNumber;
  
  @ApiModelProperty("病历号")
  @XmlElement(name = "CaseNumber")
  private String CaseNumber;
  
  @ApiModelProperty("个人账户当年支付")
  @XmlElement(name = "IndividualAccountCurrPayment")
  private String IndividualAccountCurrPayment;
  
  @ApiModelProperty("门诊号")
  @XmlElement(name = "PatientNumber")
  private String PatientNumber;
  
  @ApiModelProperty("个人自费")
  @XmlElement(name = "SelfpaymentCost")
  private String SelfpaymentCost;
  
  @ApiModelProperty("年龄")
  @XmlElement(name = "Age")
  private String Age;
  
  @ApiModelProperty("开票时间")
  @XmlElement(name = "IssueTime")
  private String IndividualAccountCurrBalance;
  
  @Data
  public static class HospitalizedExtInfo implements Serializable {
    
    @ApiModelProperty("住院号")
    @XmlElement(name = "AdmissionNumber")
    private String AdmissionNumber;
    
    @ApiModelProperty("入院日期")
    @XmlElement(name = "PatientTreatmentStartDate")
    private String PatientTreatmentStartDate;
    
    @ApiModelProperty("出院日期")
    @XmlElement(name = "PatientTreatmentEndDate")
    private String PatientTreatmentEndDate;
    
    @ApiModelProperty("工作单位")
    @XmlElement(name = "PatientCompany")
    private String PatientCompany;
    
    @ApiModelProperty("自费总金额")
    @XmlElement(name = "TotalAmountSelf")
    private String TotalAmountSelf;
    
    @ApiModelProperty("科别")
    @XmlElement(name = "Section")
    private String Section;
    
    @ApiModelProperty("床位号")
    @XmlElement(name = "BedNo")
    private String BedNo;
    
    @ApiModelProperty("现金（支票）支付")
    @XmlElement(name = "CashOrCheck")
    private Double CashOrCheck;
    
    @ApiModelProperty("本年账户支付")
    @XmlElement(name = "IndividualAccountCurrPayment")
    private Double IndividualAccountCurrPayment;
    
    @ApiModelProperty("历年账户支付")
    @XmlElement(name = "IndividualAccountPrevPayment")
    private Double IndividualAccountPrevPayment;
    
    @ApiModelProperty("医保账户")
    @XmlElement(name = "HealthCareAccountPayment")
    private Double HealthCareAccountPayment;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkName1")
    private String RemarkName1;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkContent1")
    private String RemarkContent1;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkName2")
    private String RemarkName2;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkContent2")
    private String RemarkContent2;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkName3")
    private String RemarkName3;
    
    @ApiModelProperty("结算信息")
    @XmlElement(name = "RemarkContent3")
    private String RemarkContent3;
    
    @ApiModelProperty("合计")
    @XmlElement(name = "TotalBalance")
    private Double TotalBalance;
    
    @ApiModelProperty("预缴款")
    @XmlElement(name = "PrepaidFunds")
    private Double PrepaidFunds;
    
    @ApiModelProperty("补缴")
    @XmlElement(name = "AdditionalPayment")
    private Double AdditionalPayment;
    
    @ApiModelProperty("补缴-现金")
    @XmlElement(name = "AdditionalCashPayment")
    private Double AdditionalCashPayment;
    
    @ApiModelProperty("补缴-支票")
    @XmlElement(name = "AdditionalCheckPayment")
    private Double AdditionalCheckPayment;
    
    @ApiModelProperty("退款")
    @XmlElement(name = "Refunds")
    private Double Refunds;
    
    @ApiModelProperty("退款现金")
    @XmlElement(name = "RefundsCash")
    private Double RefundsCash;
    
    @ApiModelProperty("领款人")
    @XmlElement(name = "Payee")
    private String Payee;
    
    @ApiModelProperty("领款人(签章)")
    @XmlElement(name = "PayeeSignature")
    private String PayeeSignature;
    
    @ApiModelProperty("结算明细")
    @XmlElement(name = "RemarkName4")
    private String RemarkName4;
    
    @ApiModelProperty("结算明细")
    @XmlElement(name = "RemarkContent4")
    private String RemarkContent4;
    
    @ApiModelProperty("结算明细")
    @XmlElement(name = "RemarkName5")
    private String RemarkName5;
    
    @ApiModelProperty("结算明细")
    @XmlElement(name = "RemarkContent5")
    private String RemarkContent5;
  }
  
  @Data
  public static class OutMedicalExtInfo implements Serializable {
    @ApiModelProperty("就诊号")
    @XmlElement(name = "VisitNo")
    private String VisitNo;
    @ApiModelProperty("就诊科室")
    @XmlElement(name = "VisitDeptName")
    private String VisitDeptName;
    @ApiModelProperty("现金支付")
    @XmlElement(name = "CashPayment")
    private String CashPayment;
    @ApiModelProperty("结算明细")
    @XmlElement(name = "RemarkContent5")
    private String RemarkContent5;
    @ApiModelProperty("本年支付")
    @XmlElement(name = "IndividualAccountCurrPayment")
    private Double IndividualAccountCurrPayment;
    @ApiModelProperty("本年余额")
    @XmlElement(name = "IndividualAccountCurrBalance")
    private Double IndividualAccountCurrBalance;
    @ApiModelProperty("历年支付")
    @XmlElement(name = "IndividualAccountPrevPayment")
    private Double IndividualAccountPrevPayment;
    @ApiModelProperty("历年余额")
    @XmlElement(name = "IndividualAccountPrevBalance")
    private Double IndividualAccountPrevBalance;
    @ApiModelProperty("医保账户")
    @XmlElement(name = "HealthCareAccount")
    private String HealthCareAccount;
    @ApiModelProperty("医保账户结算明细")
    @XmlElement(name = "AccountPayBI")
    private AccountPayBI AccountPayBI;
    @ApiModelProperty("现金支付结算明细")
    @XmlElement(name = "CashPayBI")
    private CashPayBI CashPayBI;
    
    @Data
    public static class AccountPayBI implements Serializable {
      
      @ApiModelProperty("费用明细")
      @XmlElement(name = "AccountPayDetail")
      private AccountPayDetail AccountPayDetail;
      @ApiModelProperty("结算明细")
      @XmlElement(name = "RemarkContent5")
      private String RemarkContent5;
      
      @Data
      public static class AccountPayDetail implements Serializable {
        
        @ApiModelProperty("名称")
        @XmlElement(name = "AccountPayName")
        private String AccountPayName;
        
        @ApiModelProperty("金额")
        @XmlElement(name = "AccountPayAmount")
        private Double AccountPayAmount;
      }
      
    }
    
    @Data
    public static class CashPayBI implements Serializable {
      
      @ApiModelProperty("费用明细")
      @XmlElement(name = "CashPayDetail")
      private CashPayDetail CashPayDetail;
      @ApiModelProperty("结算明细")
      @XmlElement(name = "RemarkContent5")
      private String RemarkContent5;
      
      @Data
      public static class CashPayDetail implements Serializable {
        
        @ApiModelProperty("名称")
        @XmlElement(name = "CashPayName")
        private String CashPayName;
        
        @ApiModelProperty("金额")
        @XmlElement(name = "CashPayAmount")
        private Double CashPayAmount;
      }
      
    }
    
  }
}
